PROFDINFO.COM

Votre enseignant d'informatique en ligne

Section 4 - Création d'usagers

Retour à la page du cours

La section 4 vous apprendra comment créer des comptes usagers sur un serveur Linux, en utilisant le terminal. Vous pourrez ensuite tester les notions de permissions apprises dans la section 1 puisque vous aurez plusieurs usagers sur le même serveur.

4.1 - Créer un usager (méthode complète)

4.2 - Créer un usager (méthode automatisée)

4.3 - Changer d'identité

4.4 - Contrôle d'accès entre les usagers

4.1 - Créer un usager (méthode complète)

Nous allons créer un usager nommé "georges", dont le mot de passe sera "1212patate". Il fera partie d’un groupe nommé "usagers"; comme tous les membres de ce groupe, nous voudrons que son répertoire maison se nomme "/home/usagers/nom" (où "nom" est "georges", évidemment).

Notez que la création d’usagers et de groupes demande qu’on soit root. Pour ces opérations, vous devrez donc préfixer chaque commande de sudo, ou encore faire sudo -i avant d'entrer toutes les commandes (sans oublier de faire exit après).

Retour à la table des matières de la section

4.1.1 - Créer le groupe

Il faut créer le groupe auquel appartient un usager avant de créer cet usager (du moins si on désire créer l’usager comme étant déjà membre du groupe en question). La commande pour créer un groupe est: /usr/sbin/groupadd

Évidemment, pour créer le groupe usagers, il faut faire:

groupadd usagers 

Note: s’il y a un ennui, si vous devez recommencer ou si vous désirez détruire le groupe, utilisez /usr/sbin/groupdel suivi du nom du groupe.

Lorsque l'on crée un groupe, il n'y a aucun changement apparent sur le serveur. Tout comme sur Windows, la notion de groupe est entièrement virtuelle et il n'y a aucun répertoire qui y est associé au départ. En fait, la seule chose qui change est le contenu du fichier /etc/group qui contient la liste de tous les groupes du système, avec quelques données supplémentaires. Chaque ligne est formatée ainsi:

groupe:mot de passe:numéro:liste d'usagers

Le mot de passe du groupe est rarement utilisé (et n'apparait de toute façon plus dans le fichier /etc/group, vous remarquerez que tous les groupes ont un x dans ce champ).

Le numéro est un numéro unique attribué automatiquement par Linux.

La liste d'usagers est une liste de noms d'usagers, séparés par des virgules, qui sont membres de ce groupe comme groupe secondaire. En effet, un usager fait toujours partie d'un groupe primaire et peut faire partie de 0, 1 ou plusieurs groupes secondaires.

Il est conseillé de ne pas éditer directement ce fichier mais d'utiliser les commandes groupadd, groupdel et groupmod pour jouer avec les groupes.

Pour créer le répertoire associé au groupe, il suffit de faire:

mkdir /home/usagers

C'est dans ce répertoire que les maisons des membres du groupe usagers (comme georges) seront placées.

Retour à la table des matières de la section

4.1.2 - Créer un usager - la méthode longue

Cette méthode procède étape par étape pour que vous compreniez exactement ce qui se passe lors de la création de l'usager.

Note: S’il y a un ennui, si vous devez recommencer ou si vous désirez détruire l’usager, utilisez /usr/sbin/userdel suivi du nom de l’usager.

Les étapes seront les suivantes (présumant bien sûr que vous avez fait sudo -i):
a) créer le répertoire maison de l’usager georges à venir

mkdir /home/usagers/georges 

b) créer l’usager georges en tant que tel

 /usr/sbin/useradd -g usagers -d /home/usagers/georges -s /bin/bash georges 

Dans cette commande, chaque switche est suivie d'une valeur:

  • -g usagers indique le groupe de l'usager
  • -d /home/usagers/georges indique le répertoire maison de l'usager (d pour directory)
  • -s /bin/bash indique le shell que l'usager utilisera
  • georges est le nom de l'usager, on l'indique tel quel à la fin de la commande

L'ordre des switches n'a pas d'importance, mais le nom de l'usager doit être à la fin.

Lorsque l'on crée un usager, une ligne est ajoutée dans le fichier /etc/passwd. Cette ligne sera dans le format:

usager:mot de passe:numéro:numéro du groupe:nom complet:répertoire maison:shell

Notez que le mot de passe n'est maintenant plus conservé dans le même fichier pour des raisons de sécurité. C'est pour cette raison que vous ne verrez qu'un x pour tous les usagers dans ce champ. Le mot de passe encrypté, ainsi que d'autres informations que l'on couvrira plus tard, se trouve dans le fichier /etc/shadow qui n'est lisible que par root.

c) indiquer que georges sera propriétaire de son propre répertoire maison (lui "donner" le répertoire):

chown georges /home/usagers/georges 

d) indiquer que usagers sera le groupe propriétaire du répertoire maison de georges:

chgrp usagers /home/usagers/georges 

Notez que l'on peut remplacer les étapes c et d par une seule en faisant:

chown georges:usagers /home/usagers/georges 

e) et, enfin, changer le mot de passe de georges (avec la commande suivante, puis en suivant les instructions):

passwd georges

Par défaut, lorsque l'on crée un compte, il est désactivé - il n'a pas de mot de passe mais ne peut pas se loguer. Le fait de lui donner un mot de passe l'active en même temps.

Pour vérifier si tout fonctionne, vous pouvez simplement ouvrir une autre console virtuelle (avec CTRL-ALT-F1 par exemple) et tenter de vous loguer en tant que georges.

Pour aller plus loin: 

Que devrait-on faire avec le répertoire /home/usagers?  À qui devrait-il appartenir et quelles sont les permissions qu'on devrait lui donner?

Retour à la table des matières de la section

4.2 - Création d'usagers - méthode automatisée

On peut accélérer grandement les choses en utilisant cette méthode:

a) Créer l'usager et son répertoire maison:

/usr/sbin/useradd -g usagers -d /home/usagers/georges -m -s /bin/bash georges

Ceci est très semblable à l'étape b de la méthode précédente. On y ajoute simplement la switche -m qui crée automatiquement le répertoire maison de l'usager (m pour makedir) pour nous. En plus, elle fait automatiquement le chown et le chgrp selon le groupe que l'on donne à georges!

Finalement, elle copie le contenu complet du répertoire /etc/skel dans le répertoire maison du nouvel usager, faisant pour chaque fichier un chown et un chgrp automatique. Tout ce qui sera placé dans /etc/skel (pour squelette de compte) sera donc une base donnée à chaque usager - libre à chacun d'eux de les modifier s'il le veut. C'est de là que viennent les fichiers de configuration que l'on a vus à la section précédente.

Il ne reste donc plus qu'à faire la dernière étape:

b) changer le mot de passe de georges:

passwd georges

Pour aller plus loin:

Faites man useradd pour découvrir un tas d'autres switches intéressantes sur cette commande!

Retour à la table des matières de la section

4.3 - Changer d'identité

Si nous sommes branchés sur une machine donnée sous un nom donné (ex: eforest sur caniche), et qu’il nous faut prendre une autre identité sur cette même machine pour faire certaines opérations, on a accès à la commande su (switch user).

Cette commande sans paramètres (su tout seul) vous permet de devenir root (si le compte est actif - ce n'est pas le cas avec notre installation d'Ubuntu où on doit faire sudo -i pour avoir un équivalent). Si c’est l’identité d’un autre usager qu’il vous faut, il suffit de donner son nom comme paramètre à la commande su (ex: su georges). Dans chaque cas, il vous faut bien entendu le mot de passe de l’individu à personnifier (sauf si vous êtes root au départ, à ce moment vous pouvez devenir qui vous voulez sans mot de passe).

Sur des systèmes avec un compte root actif et sans le sudo, on utilise souvent su pour accomplir des opérations root sur une base temporaire.

Notez que lorsque vous faites su pour changer d'identité, vous demeurez dans le même répertoire courant et le seul fichier de configuration qui est lu est le .bashrc (voir cette section pour des détails).

4.4 - Contrôle d’accès entre les usagers

Nous allons maintenant utiliser le compte georges pour créer des répertoires et des fichiers, et utiliser de façon concurrente votre compte personnel pour vérifier l’impact des différents droits d’accès sur ce qu’on est en mesure (ou non) de faire sur ces fichiers et ces répertoires.

À chaque étape, indiquez la ou les commande(s) nécessaire(s) pour réaliser l'opération donnée.

Étape 0

Branchez-vous sous le nom georges.

 

Dans votre répertoire maison, créez un répertoire nommé dirtest


Donnez à tous les usagers le maximum de droits possibles sur ce répertoire:


Basculez vers une autre console virtuelle


Combien de consoles virtuelles pouvez-vous avoir en même temps?


Note: vous pouvez, sous LINUX, avoir une console virtuelle graphique et des consoles texte en même temps, et basculer de l’une à l’autre sans problème.

Étape 1

Branchez-vous dans cette nouvelle console sous votre nom d'usager personnel.

Essayez de voir le contenu de /home/usagers/georges


Essayez d’entrer dans /home/usagers/georges/dirtest

 

Revenez à votre répertoire maison

 

Basculez vers la console de georges.


Retirez les droits d’exécution sur dirtest à tous les autres usagers (rappelez-vous que les droits d'exécution sur un répertoire représentent en fait un droit de traverser)

 


Basculez vers la console de votre compte personnel


Essayez d’entrer dans /home/usagers/georges/dirtest

 

Étape 2

Essayez de changer les droits sur /home/usagers/georges/dirtest (tout en étant logué sur votre compte personnel).  Est-ce possible?

 

À trouver

Quel(s) droit(s) faut-il avoir sur un répertoire pour pouvoir y entrer?


Quel(s) droit(s) faut-il avoir sur un répertoire pour pouvoir y écrire (par exemple, faire un simple touch dans le répertoire)?


Quel(s) droit(s) faut-il avoir sur un répertoire pour pouvoir le renommer?


Quel(s) droit(s) faut-il avoir sur un répertoire pour pouvoir en lire le contenu?

 

Étape 3

Sous l’identité georges, veuillez créer un fichier contenant du texte (par exemple, en faisant ls -al /etc > test.txt (sauriez-vous expliquer ce que fait cette commande?)).


Quels sont ses droits d'accès par défaut?

 

Note: on peut conférer un droit d’exécution à tout fichier, mais ça ne fait rien de bon quand ce n’est ni un répertoire, ni un binaire, ni un script.

 

À trouver

Quel(s) droit(s) faut-il avoir sur un fichier pour pouvoir en lire le contenu?


Quel(s) droit(s) faut-il avoir sur un fichier pour pouvoir le renommer?


Quel(s) droit(s) faut-il avoir sur un fichier pour pouvoir en modifier le contenu?


Quel(s) droit(s) faut-il avoir sur un fichier pour pouvoir l’exécuter?

 

Retour à la table des matières de la section